In the field of data storage systems, it has been known to employ data encryption to protect information stored on a magnetic disk or other storage medium. Plaintext data sent by a host computer for storage is encrypted according to an encryption algorithm and a secret encryption key, and the encrypted data is stored on the storage medium. When the data is retrieved later, for example in response to a read command from the host computer, the encrypted data is first read from the storage medium and then decrypted using a decryption algorithm and decryption key which are complementary to the encryption algorithm and encryption key. In many cases the same key can actually serve as both the encryption and decryption key.
Also known in the art are data storage systems of some complexity, especially larger data storage systems and/or systems designed for high availability for demanding application environments, such as on-line transaction processing, etc. These storage systems often employ both a logical as well as a physical view of stored data. In one well-known example, a logical unit of storage is physically stored on a set of physical units using redundant array of inexpensive disks (RAID) techniques. There are a variety of other applications of the logical/physical paradigm as well.
In these kinds of systems it is known to employ a central storage processor (SP) which receives storage commands from a host that are directed to a logical unit of storage, and which translates between the logical view to a physical view according to a RAID algorithm or other algorithm. The storage processor then creates one or more storage commands directed to the corresponding physical units of storage, and forwards these commands to one or more hardware input/output (I/O) modules.
The I/O modules in turn are responsible for carrying out the physical-level storage commands in conjunction with individual disk drive devices coupled to the I/O module. In the case of read commands, the central storage processor is responsible for receiving the data from each of the physical-level read commands and creating the logical-level read response according to the RAID or other algorithm it utilizes. The storage processor and I/O modules operate together in a coordinated and coherent fashion, each I/O module maintaining local information necessary to its operations but also linked in a consistent manner with information at the SP so that commands and data can be correctly handed off from one device to another in the course of the overall processing of an I/O command.